#ifndef __WIZ_BASE_TYPELIST_TEMPLATE_HPP__SHANHAOBO_19800429__
#define __WIZ_BASE_TYPELIST_TEMPLATE_HPP__SHANHAOBO_19800429__

#include "./WizBaseTypeListImpl.hpp"

namespace Wiz
{
    namespace TypeList
    {
        template <class T> struct Type;
    } /// end of namespace TypeList
} /// end of namespace Wiz

#endif /*__WIZ_BASE_TYPELIST_TEMPLATE_HPP__SHANHAOBO_19800429__*/

#undef WIZ_TYPELIST_PARAM_COUNT
#define WIZ_TYPELIST_PARAM_COUNT WIZ_MPP_REPEAT_FILE_COUNT
#if defined(WIZ_TYPELIST_PARAM_COUNT) && (WIZ_TYPELIST_PARAM_COUNT > 0) && (WIZ_TYPELIST_PARAM_COUNT < 255)

#define WIZ_TEMP_WEPX           (WIZ_ENUM_PARAM_X(WIZ_TYPELIST_PARAM_COUNT, T))

namespace Wiz
{
    namespace TypeList
    {
        template<WIZ_ENUM_PARAM_X(WIZ_TYPELIST_PARAM_COUNT, class T)>
        struct Type<::Wiz::Void::Type(WIZ_ENUM_PARAM_X(WIZ_TYPELIST_PARAM_COUNT, T))> : public WIZ_MPP_COMBINE(WIZ_MPP_COMBINE(WIZ_TYPELIST_, WIZ_TYPELIST_PARAM_COUNT), WIZ_TEMP_WEPX)
        {
        }; /// end of class Type
    } /// end of namespace TypeList
} /// end of namespace Wiz

#undef WIZ_TEMP_WEPX

#endif /*defined(WIZ_TYPELIST_PARAM_COUNT) && (WIZ_TYPELIST_PARAM_COUNT > 0) && (WIZ_TYPELIST_PARAM_COUNT < 255)*/
